﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 创建者：王明亮
 * 创建时间：2022/8/19 23:02:14
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;


namespace Aliang.Common.Helper.Config
{
    /// <summary>
    /// AppConfigHelper 的摘要说明
    /// </summary>
    public class AppConfigHelper
    {
        #region 单例

        private static AppConfigHelper _instance;

        public static AppConfigHelper Instance => _instance ?? (_instance = new AppConfigHelper());

        private AppConfigHelper()
        {

        }

        #endregion

        /// <summary>
        /// 获取配置文件
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public T GetConfig<T>(string filePath) where T : class
        {
            try
            {
                if (!File.Exists(filePath))
                    return default;
                var jsonContent = File.ReadAllText(filePath);
                return JsonConvert.DeserializeObject<T>(jsonContent);
            }
            catch (Exception ex)
            {
                return default;
            }
        }

        /// <summary>
        /// 保存配置文件
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <param name="filePath"></param>
        public bool SaveConfig<T>(T t, string filePath) where T : class
        {
            try
            {
                if (t == null)
                    return false;
                var json = JsonConvert.SerializeObject(t);
                File.WriteAllText(filePath, json);
                return true;
            }
            catch (Exception e)
            {
                return false;
            }
        }

    }
}
